package prova;
import java.io.*;
import java.net.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
	
public class ReadFileCSVCatasto {
	// definiamo il percorso al file da leggere
	static String filePath = "/home/okkam/Nicola/provatxt.txt";
	BufferedReader reader = null;
	
	public ReadFileCSVCatasto() {
		
    }
    public static void main(String[] args){
    	
    	ReadFileCSVCatasto lettore = new ReadFileCSVCatasto();
    	ArrayList<ArrayList<Punto>> listaPoligoni = creaListaPoligoni(lettore.apriStream(filePath));
    	Iterator<ArrayList<Punto>> ipol = listaPoligoni.iterator();
    	while(ipol.hasNext()){
    		Iterator<Punto> ivertici = ipol.next().iterator();
    		//System.out.println("Poligono");
    		while(ivertici.hasNext()){
    			Punto punto = ivertici.next();
    			//System.out.println("Punto: x = " + punto.getX() + " , y = " + punto.getY());
    		}
    		
    	}
  
    }
    
    public List apriStream(String filePath){
    	// definiamo il percorso al file da leggere
    	ArrayList<String> listaRecord = null;
        File doc = new File(filePath);
    	InputStream is;
    	BufferedReader reader;
    	String stringaLetta = "";
		try {
			listaRecord = new ArrayList<String>();
			is = new FileInputStream(doc);
			reader = new BufferedReader(new InputStreamReader(is));
			stringaLetta = reader.readLine();
	  		  int i = 0;
	  		  while  ((stringaLetta = reader.readLine()) != null) {
	  			  	if (stringaLetta!="null"){
	  			  		
	  			  	listaRecord.add(stringaLetta);
	  			  		
	  				}
	  		  }
	  		 
	  		  reader.close();
	  		  is.close();
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		catch (IOException e)
	    {
	      System.out.println(e.getMessage());
	    }
    	
		return listaRecord;
    	
    }
    
	public static ArrayList<ArrayList<Punto>> creaListaPoligoni(List listaRecord) {
		
		ArrayList<ArrayList<Punto>> arrayListPoligoni = new ArrayList<ArrayList<Punto>>();
	    
    
    // creaiamo un blocco try-catch per intercettare le eccezioni  
    
       
	 
	  // legge lista record
	  Iterator<String> irecord = listaRecord.iterator();
	  while  (irecord.hasNext()) {
		String stringaLetta = irecord.next();  
		ArrayList<Punto> arrayListVertici = creaListaVertici(stringaLetta);		  		
		arrayListPoligoni.add(arrayListVertici);// QUANDO LEGGO TUTTA LA RIGA LO AGGIUNGO
		// ALL'ARRAYLIST DEI POLIGONI
			
	  }  
        
    return arrayListPoligoni;
    
   }

	  //return arrayListPoligoni;
    private static ArrayList<Punto> creaListaVertici(String stringaLetta) {
    	String delims = "[;]";
  		String[] tokens = stringaLetta.split(delims);
    	ArrayList<Punto> arrayListVertici = new ArrayList();
  		
  		
		for (int h = 5 ; h < 14 ; h = h + 2){
			
		//CREO UN ARRAYLIST DI VERTICI
			Punto punto = new Punto();
			punto.setCodiceComune(Integer.parseInt(tokens[2]));
	  		punto.setNumero(Integer.parseInt(tokens[3]));
	  		punto.setDenominatore(Integer.parseInt(tokens[4]));
	  		if ((!(tokens[h]).equals("0")) ||(!(tokens[h+1]).equals("0"))){
	  			punto.setX(Double.parseDouble(tokens[h]));
	  			punto.setY(Double.parseDouble(tokens[h+1]));
			//test
	  				/*System.out.println("token: " + tokens[h]);
	  				System.out.println("token[h+1]: " + tokens[h+1]);
	  				System.out.println("punto.x: " + punto.getX());
	  				System.out.println("punto.y: " + punto.getY());*/
			
			
			arrayListVertici.add(punto);}
		}
		
		return arrayListVertici;
    }
 }


